home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Programming / vbcc / machines / amiga68k / libsrc / stdio / setvbuf.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-24  |  595 b   |  22 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int setvbuf(FILE *f,char *buf,int mode,size_t size)
  5. {
  6.     if(mode==_IONBF&&size<2){size=2;buf=0;}
  7.     if(size<2||f->flags&(_READ|_WRITE)) return(EOF);
  8.     if(mode==_IONBF) {f->flags|=_UNBUF;size=1;} else f->flags&=~_UNBUF;
  9.     if(mode==_IOLBF) f->flags|=_LINEBUF; else f->flags&=~_LINEBUF;
  10.     if(buf){
  11.         size--;                 /*  eins wird fuer unget gebraucht  */
  12.         f->base=buf+1;
  13.         f->flags|=_NOTMYBUF;
  14.     }else{
  15.         if(!(f->base=(char *)malloc(size+1)+1))
  16.             return(EOF);
  17.     }
  18.     f->bufsize=size;
  19.     return(0);
  20. }
  21.  
  22.